# """
# 1. 获取/生成测试套件
#     unittest.TestLoader()/unitest.defaultTestLoader
#     1.1 实例化TestLoader类
#     1.2 调用discover方法生成测试套件
#     1.3 返回组装好的测试套件给调用者
#
# 2. 执行测试套件生成测试报告
#     2.1 创建测试套件
#     2.2 执行测试用例生成测试报告
#     2.3 返回测试报告的路径
# """
# import os, unittest,time
# from HTMLTestRunner import HTMLTestReportCN
# # 1. 获取/生成测试套件
# def create_suite():
#     # 路径:
#     dir_path = os.path.dirname(__file__) + "/testCase/"
#     # unittest.TestLoader()/unitest.defaultTestLoader
#     # 1.1 实例化TestLoader类
#     tl = unittest.TestLoader()
#     # 1.2 调用discover方法生成测试套件
#     suite = tl.discover(start_dir=dir_path, pattern="*Test.py")
#     # 1.3 返回组装好的测试套件给调用者
#     return suite
#
# # 2. 执行测试套件生成测试报告
# def create_report(size):
#     # 2.1 创建测试套件
#     suite = create_suite()
#     # 获取当前时间
#     cur_time = time.strftime("%Y_%m_%d_%H_%M_%S")
#     #获取报告存放路径
#     report = os.path.dirname(__file__)+r"/testReport/"+ cur_time+size+"report.html"
#     # 2.2 执行测试用例生成测试报告
#     with open(report,"wb")as fp:
#         # 实例化执行对象,调用run方法
#         runner = HTMLTestReportCN(stream=fp,
#                                   title="appium自动化测试报告",
#                                   verbosity=2,
#                                   tester="朕")
#         runner.run(suite)
#     # 2.3 返回测试报告的路径
#     return report
#
# if __name__ == '__main__':
#     # 执行用例生成报告
#     dir = create_report("小米9")
#     print(dir)

# ======================
# 多设备

"""
1. 获取/生成测试套件
    unittest.TestLoader()/unitest.defaultTestLoader
    1.1 实例化TestLoader类
    1.2 调用discover方法生成测试套件
    1.3 返回组装好的测试套件给调用者

2. 执行测试套件生成测试报告
    2.1 创建测试套件
    2.2 执行测试用例生成测试报告
    2.3 返回测试报告的路径
"""
import os, unittest,time
from HTMLTestRunner import HTMLTestReportCN
from common.driver import Driver
# 1. 获取/生成测试套件
def create_suite():
    # 路径:
    dir_path = os.path.dirname(__file__) + "/testCase/"
    # unittest.TestLoader()/unitest.defaultTestLoader
    # 1.1 实例化TestLoader类
    tl = unittest.TestLoader()
    # 1.2 调用discover方法生成测试套件
    suite = tl.discover(start_dir=dir_path, pattern="*Test.py")
    # 1.3 返回组装好的测试套件给调用者
    return suite

# 2. 执行测试套件生成测试报告
def create_report(d_name,p_name,size):
    # 初始化设备信息
    Driver.devicesName = d_name
    Driver.port = p_name
    # 2.1 创建测试套件
    suite = create_suite()
    # 获取当前时间
    cur_time = time.strftime("%Y_%m_%d_%H_%M_%S")
    #获取报告存放路径
    report = os.path.dirname(__file__)+r"/testReport/"+ cur_time+size+"report.html"
    # 2.2 执行测试用例生成测试报告
    with open(report,"wb")as fp:
        # 实例化执行对象,调用run方法
        runner = HTMLTestReportCN(stream=fp,
                                  title="appium自动化测试报告",
                                  verbosity=2,
                                  tester="朕")
        runner.run(suite)
    # 2.3 返回测试报告的路径
    return report

if __name__ == '__main__':
    # 准备设备信息
    list1= [("127,0,0,1:21503",4723,"小米9"),("127,0,0,1:21513",4725,"小米6")]
    # 执行用例生成报告
    from multiprocessing import Pool
    pool = Pool(len(list1))
    res_list = []
    # 执行框架
    for a,b,c in list1:
        res = pool.apply_async(create_report,(a,b,c))
        res_list.append(res)
    print(res_list)
    # 阻塞进程
    pool.close()
    pool.join()
    print("结束")